﻿using Project_veilingsite.Models;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using WebMatrix.WebData;

namespace Project_veilingsite.Controllers
{
    [Authorize]
    public class PlaatsVeilingController : Controller
    {
        private dtb_Veilingssite _db = new dtb_Veilingssite();

        //Formulier opvragen
        [Authorize]
        [HttpGet]
        public ActionResult Index()
        {
            //een lijst maken die strings bevat
            var GenreList = new List<string>();
            //haal alle genres op
            var GenreQuery = from d in _db.Genres
                             orderby d.genre
                             select d.genre;
            //zorg dat er geen dubbele waarden zijn
            GenreList.AddRange(GenreQuery.Distinct());
            //dit heeft de dropdown list nodig 
            ViewBag.genres = new SelectList(GenreList);
            var veiling = new VeilingModel();
            return View(veiling);
        }



        //Veiling naar de databank sturen
        [HttpPost]
        public ActionResult Feedback(VeilingModel veiling, string genres/*, HttpPostedFileBase afbeelding
            */)
        {
            try
            {
                if (ModelState.IsValid&& !genres.Equals(""))
                {
                    var number2 = (from d in _db.Genres
                                   orderby d.genre
                                   where d.genre.Equals(genres)
                                   select d.id).ToArray();
                    int genreIndex = number2[0];

                    //User input is correct (juiste veldingaven)
                    veiling.datum = DateTime.Now;
                    veiling.vervaldag = DateTime.Now.AddMonths(1);
                    veiling.gebruikersid = WebSecurity.CurrentUserId; //GebruikersID opvragen
                    veiling.genre = genreIndex;

                    _db.Veilingen.Add(veiling);
                    _db.SaveChanges();

                    //Aanmaken succesvol
                    ViewData["title"] = "Veiling Succes";
                    ViewData["header"] = "Veiling is met succes aangemaakt";
                    ViewData["message"] = "";
                }
                else
                {
                    //User input is foutief (foutieve veldingaven)
                    ViewData["title"] = "Veiling Mislukt";
                    ViewData["header"] = "Helaas. Er is iets fout gelopen. Uw veiling is niet aangemaakt :(";
                    ViewData["message"] = "Dit kan zijn omdat niet alle velden correct ingegeven zijn. Als u denkt dat toch alles correct is ingegeven, gelieve de site admin te contacteren.";
                }
            }
            catch (Exception e)
            {
                //Exception opgeworpen
                ViewData["title"] = "Veiling Mislukt";
                ViewData["header"] = "Helaas. Er is iets fout gelopen. Uw veiling is niet aangemaakt :(";
                ViewData["message"] = "Dit kan zijn omdat niet alle velden correct ingegeven zijn. Als u denkt dat toch alles correct is ingegeven, gelieve de site admin te contacteren.";

                //Server.MapPath("~") = de root-map van het project
                string pad = Server.MapPath("~") + "/LoggingTracing/tracingLogging.txt";
                if (!System.IO.File.Exists(pad))
                {
                    System.IO.File.Create(pad);
                }

                using (StreamWriter swTracing = System.IO.File.AppendText(pad))
                {
                    swTracing.Write("\n\nDatum/Tijd: " + DateTime.Now + "\nException: " + e.StackTrace);
                }
            }

            return View();
        }
    }
}